#include <iostream>
#include <string>
#include <vector>
#include <functional>

// 各种不同参数的任务
void Task1(const std::string& str, int num) { /*...*/}
int Task2(int num) { /*....*/}
void Task3(const std::string& str) { /*....*/}

int main()
{
    using Task = std::function<void()>;
    std::vector<Task> arrayTask;  //任务数组
    // 同一个函数绑定传递不同的参数
    arrayTask.push_back(std::bind(Task1, "listen", 20));
    arrayTask.push_back(std::bind(Task1, "hello", 20));

    // 绑定不同的函数
    arrayTask.push_back(std::bind(Task2, 30));
    arrayTask.push_back(std::bind(Task3, "happy"));

    // 处理任务
    for(auto &e : arrayTask)
    {
        e();
    }
    return 0;
}
